// 输入 url 到打开页面 都做了什么事情 ?
// 一、url输入
// 当我们在浏览器中输入网址的时候，浏览器已经开始在智能的匹配的可能的url了。他会在历史记录、收藏书签等网址中匹配可能是输入字符串所对应的的url，然后给出智能提示，用来补全url。对于谷歌浏览器，他甚至可以在缓存中将页面直接显示出来。

// 二、DNS解析
// DNS：域名系统。实现了网址到ip地址的转换。
// 什么是DNS：DNS是因特网上作为域名和ip地址相互映射的分布式数据库，能够使用户更方便的访问互联网，而不用去记住能够被机器读取的ip地址。
// 域名解析：通过主机名，最终得到该主机名对应的ip地址的过程叫做域名解析。（或主机解析）

// 三、TCP链接
// tcp三次握手
// 1) client 端首先发送一个 SYN 包告诉 Server 端我的初始序列号是 X； 
// 2） Server 端收到 SYN 包后回复给 client 一个 ACK 确认包，告诉 client 说我收到了； 
// 3）接着 Server 端也需要告诉 client 端自己的初始序列号，于是 Server 也发送一个 SYN 包告诉 client 我的初始序列号是 Y； 
// 4） Client 收到后，回复 Server 一个 ACK 确认包说我知道了。

// 四、发送http请求
// 客户端向服务器发送http请求时，会请求一些信息，包含三个部分：

// 请求方法/URL协议/版本
// 请求头
// 请求正文
// 五、服务器永久重定向
// 服务器给浏览器响应一个永久重定向的301响应。
// 这样浏览器就会访问http://www.google.com/ 而非http://google.com/。
// 重定向原因：

// 网站调整
// 网页被移到一个新地址
// 网页扩展名改变
// 301和302的区别：301和302都表示重定向
// 区别在于：

// 302表示临时的转移，当一个URL短期内变化使用。（旧地址A的资源仍然在，这个临时重定向只是临时从旧地址A跳转到新地址B，搜索引擎会抓取新的内容而保存旧的网址）
// 301是永久重定向。搜索引擎在抓取新内容时，会将旧的网址替换成重定向之后的网址。（301表示旧地址A的资源已经被永久移除了，这个资源不可访问了，搜索引擎在抓取新内容的同时，也会将旧的网址替换为重定向之后的新网址）
// 六、服务器处理请求
// 后端在固定的端口接收到tcp报文开始，他会对tcp链接进行处理，对http协议进行解析。

// 什么是反向代理

// 七、服务器返回一个http响应
// 经过前面的六个步骤，服务器已经收到了我们的请求，并且处理了我们的 请求，到这一步会把他处理的结果返回，也就是返回一个http响应。
// http响应与http请求相似，http响应也由三个部分构成，分别是：

// 响应行（eg：HTTP/1.1 200 OK 协议版本 状态码 状态描述）
// 响应头
// 响应正文（包含我们需要的具体信息，cookie，html，css，js，后端发回的请求数据等）
// *状态码
// 八、浏览器显示html
// 构建dom树 -> 构建render树 -> 布局render树 -> 绘制render树

// 九、链接结束
// 四次挥手
// 1）Client 发送一个 FIN 包来告诉 Server 我已经没数据需要发给 Server 了； 
// 2）Server 收到后回复一个 ACK 确认包说我知道了； 
// 3）然后 server 在自己也没数据发送给 client 后，Server 也发送一个 FIN 包给 Client 告诉 Client 我也已经没数据发给 client 了；
// 4）Client 收到后，就会回复一个 ACK 确认包说我知道了。